package com.yupi.yuojbackendgateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;

import java.util.Arrays;

// 处理跨域
@Configuration
public class CorsConfig {

    //自定义一个跨域的拦截器 当网关收到请求的时候会首先执行这个拦截器
    @Bean
    public CorsWebFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        //addAllowedMethod("*")方法设置允许的请求方法为所有方法，也可以根据需要指定具体的请求方法。
        config.addAllowedMethod("*");
        //给请求的响应头加上一个允许跨域的注解 config.setAllowCredentials(true)。这将在响应头中添加一个运行跨域的注解。
        config.setAllowCredentials(true);
// todo 实际改为线上真实域名、本地域名 将允许的请求来源设置为任意来源。在实际使用中，可以根据需要修改为线上真实域名或本地域名。
        config.setAllowedOriginPatterns(Arrays.asList("http://49.235.182.115"));
        //将允许的请求头设置为所有请求头
        config.addAllowedHeader("*");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
        source.registerCorsConfiguration("/**", config);
        return new CorsWebFilter(source);
    }
}
